package cn.zwx.goods.svc.service;

import cn.zwx.goods.svc.domain.bo.SpuBO;
import cn.zwx.goods.svc.domain.entity.SpuAttrValueEntity;
import cn.zwx.goods.svc.domain.entity.SpuEntity;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

import java.util.List;

/**
 * @author zhangwenxue
 */
public interface SpuService {
    /**
     * 统计条数
     * @param spuWrapper 查询条件
     * @return  返回行数
     */
    Integer selectCount(LambdaQueryWrapper<SpuEntity> spuWrapper);

    /**
     * 新增spu
     * @param spuEntity spuEntity
     */
    void insert(SpuEntity spuEntity);
    /**
     * 新增spu attr list
     * @param spuAttrValueList spuAttrValueList
     */
    void batchInsertAttr(List<SpuAttrValueEntity> spuAttrValueList);

    /**
     * 查询spu列表信息
     * @param spuBO 查询参数
     * @return 返回spu列表
     */
    List<SpuEntity> selectList(SpuBO spuBO);

    /**
     * 根据主键id查询商品信息
     * @param spuId 主键id
     * @return 返回商品信息
     */
    SpuEntity selectById(String spuId);


    /**
     * 查询属性信息
     * @param spuId
     * @return List<SpuAttrValueEntity>
     */
    List<SpuAttrValueEntity> selectAttrBySpuId(String spuId);

    /**
     * 更新数据
     * @param spuEntity spuEntity
     */
    void update(SpuEntity spuEntity);

    /**
     * 根据spu删除属性
     * @param id spuId
     */
    void deleteAttrBySpuId(String id);

    /**
     * 删除spu信息
     * @param spuId spuId
     */
    void deleteSpuById(String spuId);

}
